For each..next
for each..next 控制语句是一个脚本迭代构造,可为逗号分隔列表中的每个值执行一个或几个语句。列表中的每个值均会执行由 for 和 next 限定的循环中的语句。
语法:
特殊语法可以生成带有当前目录内文件和目录名称的列表。
for each var in list
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
next [var]
参数:
参数 | 说明 |
---|---|
var | 脚本变量名称,可为每次循环执行获取列表中的新值。如果 var 在 next 之后指定,变量名必须与对应的 for each 之后查找的变量名相同。 |
var 变量的值可通过循环内的语句进行更改,但这并非出色的编程做法。
如果在循环内遇到 exit for 子句,则脚本执行会转移至表示循环结束的 next 子句之后的第一个语句。exit for 子句可通过选择性使用 when 或 unless 后缀变为有条件子句。
语法:
list := item { , item }
item := constant | (expression) | filelist mask | dirlist mask | fieldvaluelist mask
参数 | 说明 |
---|---|
constant | 任何数字或字符串。请注意,直接在脚本中写入的字符串必须附上单引号。没有单引号的字符串将被解释为变量,而变量的值之后将被使用。数字不必用单引号引起来。 |
expression | 任意表达式。 |
mask | 文件名称或文件夹名称掩码,包括任何有效的文件名称字符及标准通配符,比如 * 和 ?。 您可以使用绝对文件路径或 lib:// 路径。 |
condition | 用于评估 True 或 False 的逻辑表达式。 |
statements | 一个或多个 Qlik Sense 脚本语句的任意组。 |
filelist mask | 该语法会在匹配文件名称掩码的当前目录中生成逗号分隔的全部文件列表。 信息注释此参数仅在标准模式下支持库连接。请参阅文件系统访问限制 |
dirlist mask | 该语法会在匹配文件夹名称掩码的当前文件夹中生成逗号分隔的全部文件夹列表。 信息注释此参数仅在标准模式下支持库连接。请参阅文件系统访问限制 |
fieldvaluelist mask | 此语法迭代已经加载到 Qlik Sense 的字段值。 |
示例 1: 加载文件列表
示例 2: 在磁盘上创建文件列表
此示例加载文件夹中所有 Qlik Sense 相关文件的列表。
示例 3: 迭代字段值
此示例迭代已加载的 FIELD 值列表,并生成新字段 NEWFIELD。对每个 FIELD 值,都会创建两条 NEWFIELD 记录。
最终生成的表格如下所示:
NEWFIELD |
---|
one-1 |
one-2 |
two-1 |
two-2 |
three-1 |
three-2 |